/**
 * commonForm depend vue
 * el -> 容器ID
 * urlObj -> 请求数据/新增/编辑/删除 接口
 * serverUrl -> 服务器地址
 */

function commonFun(elem, urlObj, status, dataIdstr) {
    this.el = elem; // vue 控制器
    this.status = status; // 非特殊请求页面数据状态标识 ps:列表数据,无需登录公共数据
    this.dataIdstr = dataIdstr; // 向服务器传递参数的参数名
    this.getDataUrl = urlObj.getDataUrl; // urlObj {} -> 页面业务逻辑交互地址
    this.saveUrl = urlObj.saveUrl;
    this.delUrl = urlObj.delUrl;
}
commonFun.prototype = {
    commonFormInit: function() {
        var _this = this; // this -> commonFun obj
        var vm = new Vue({
            el: '#' + _this.el,
            data: {
                dataObj: {}, // vue数据容器
                status: false, // 默认值
                title: '', // 导航头
                dataId: '' // 
            },
            mounted: function() {
                this.init();
            },
            methods: {
                init: function() { // 基础页面初始化
                    //console.log(_this.status)
                    if (_this.status) { // 处理非特殊请求的页面数据
                        this.getData();
                    };
                    //mui.init();
                    mui.plusReady(function() { // 具体某个业务ID下的数据表
                        var self = plus.webview.currentWebview(); //获取当前窗体对象
                        //console.log(self)
                        vm.dataId = self.rid; //接受上一页面传过来的值
                        vm.title = self.title;
                        //console.log('接收到类型ID值:' + vm.dataId);
                        // 判断状态类型  编辑/新增
                        if (vm.dataId != null) { // 编辑   ps: null -> 新增
                            vm.status = true; // 将 status -> true,显示编辑页面 ps:默认值 false 显示的是新增
                            vm.getDataForId(); // 拉取对应ID的数据
                        };
                    });
                },
                getDataForId: function() { // 编辑/详情/列表子页面  请求数据
                    var data = {},
                        keyName = _this.dataIdstr;
                    data[keyName] = vm.dataId;
                    mui.ajax(serverUrl + _this.getDataUrl, {
                        dataType: 'json',
                        type: 'post',
                        data: data,
                        success: function(data) {
                            console.log(data)
                                // if (data.code == 200) {
                            vm.dataObj = data;
                            // } else {
                            //     mui.toast(data.msg)
                            // }
                        },
                        error: function(type, errorThrown) {
                            mui.toast('服务器异常,请稍后重试!')
                        }
                    })
                },
                getData: function() { // 获取页面数据
                    mui.ajax(serverUrl + _this.getDataUrl, {
                        dateType: 'json',
                        type: 'get',
                        success: function(data) {
                            console.log(data)
                                // if (data.code == 200) {
                            vm.dataObj = data;
                            // } else {
                            //     mui.toast(data.msg)
                            // }
                        },
                        error: function(type, errorThrown) {
                            mui.toast('服务器异常,请稍后重试!')
                        }
                    })
                },
                delData: function(url, id) { // 删除数据
                    var data = {},
                        keyName = _this.dataIdstr;
                    data[keyName] = id;
                    mui.ajax(serverUrl + url, {
                        dateType: 'json',
                        type: 'get',
                        data: data,
                        success: function(data) {
                            if (data.code == 200) {
                                vm.getData();
                                mui.toast('删除成功');
                            } else {
                                mui.toast(data.msg)
                            }
                        },
                        error: function(type, errorThrown) {
                            mui.toast('服务器异常,请稍后重试!')
                        }
                    })
                },
                openWin: function(urlName) { // 打开新页面
                    var nwaiting = plus.nativeUI.showWaiting();
                    webviewShow = plus.webview.create(urlName, urlName);
                    // var webview = mui.openWindow({
                    // 	url: urlName,
                    // 	id: urlName,
                    // 	show: {
                    // 		autoShow: true,
                    // 		aniShow: "auto",
                    // 	},
                    // 	waiting: {
                    // 		autoShow: true,
                    // 		title: '正在加载...'
                    // 	}
                    // })
                },
                openWinID: function(urlName, id) { // 打开新页面
                    var aId = id,
                        nwaiting = plus.nativeUI.showWaiting();
                    webviewShow = plus.webview.create(urlName, urlName, { 'rid': aId });
                    // var webview = mui.openWindow({
                    //     url: urlName,
                    //     id: urlName,
                    //     extras: {
                    //         rid: aId //扩展参数
                    //     },
                    //     show: {
                    //         autoShow: true,
                    //         aniShow: "auto",
                    //     },
                    //     waiting: {
                    //         autoShow: true,
                    //         title: '正在加载...'
                    //     }
                    // })
                },
                openWinTitle: function(id, url, title) { // 新打开页面 (带导航头)
                    var aId = id,
                        urlId = url,
                        urlName = urlId + ".html",
                        title = title,
                        nwaiting = plus.nativeUI.showWaiting();
                    // img = {
                    //     base64Data: ''
                    // },
                    webviewShow = plus.webview.create(urlName, urlName, { 'rid': aId, 'title': title });

                    // if (type == 'edit') {
                    //     topTitle = {
                    //         title: { //标题配置
                    //             text: title, //标题文字
                    //         },
                    //         back: { //左上角返回箭头
                    //             image: img
                    //         }
                    //     }
                    // } else {
                    //     topTitle = {
                    //         title: { //标题配置
                    //             text: title, //标题文字
                    //         },
                    //         back: { //左上角返回箭头
                    //             image: img
                    //         }
                    //     }
                    // };
                    // var webview = mui.openWindowWithTitle({
                    //     url: urlName,
                    //     id: urlName,
                    //     extras: {
                    //         rid: aId //扩展参数
                    //     },
                    //     show: {
                    //         autoShow: true,
                    //         aniShow: "auto",
                    //     },
                    //     waiting: {
                    //         autoShow: true,
                    //         title: '正在加载...'
                    //     }
                    // }, topTitle)
                },
                btnFun: function(id, property, event) { // 按钮事件
                    var rid = id, // 数据id
                        type = property.type, // 按钮事件类型
                        title = property.title, // 新增/编辑到航头内容
                        aUrl = property.url; // 提交地址/新开页面地址
                    console.log(rid + '---' + aUrl + '---' + type);
                    switch (type) {
                        case 'del': // 删除
                            var msg = $(event.currentTarget).attr('sureMsg');
                            mui.confirm('', msg, ['取消', '确认'], function() { // 删除操作询问框 -> 防止误操作
                                vm.delData(_this.delUrl, rid);
                            }, 'div')
                            break;
                        case 'edit': // 编辑
                        case 'add': // 新增
                            vm.openWinTitle(rid, aUrl, title) // add  rid = null
                            break;
                        default:
                            break;
                    }
                },
                submitFun: function(event) { // 提交按钮
                    var type = $(event.currentTarget).attr('FunType'); // 事件类型
                    console.log(type);
                    var data = {};
                    if (type != 'logout') { // 如果是注销登录 不做表单的提交
                        data = $('#commonForm').serialize();
                    }
                    mui.ajax(serverUrl + _this.saveUrl, {
                        dataType: 'json',
                        type: 'post',
                        data: data,
                        success: function(data) {
                            console.log(data);
                            if (data.code == 200) {
                                if (type == 'login') { // 登录成功返回
                                    plus.storage.setItem('token', data.data.token);
                                    mui.toast(data.msg);
                                    vm.showPar();
                                } else if (type == 'logout') { // 注销成功返回
                                    plus.storage.removeItem('token');
                                    // 这里会做跳回登录页面的处理
                                    mui.toast(data.msg);
                                    vm.showLogin();
                                } else { // 基础保存返回 
                                    mui.toast(data.msg);
                                    vm.showPar();
                                }
                            } else {
                                mui.toast(data.msg);
                            }
                        },
                        error: function(type, errorThrown) {
                            console.log(errorThrown)
                            mui.toast('服务器异常,请稍后重试!')
                        }
                    })
                },
                showPar: function() {
                    mui.plusReady(function() { // 关闭当前页面
                        var current = plus.webview.currentWebview();
                        var currentPar = current.opener(); //查找  父页面
                        mui.fire(currentPar, "pullRefresh"); //触发父级页面的 pageflowrefresh 方法
                        // 关闭页面写在自定义函数下面   可以解决  关闭login后 连续显示的闪屏
                        plus.webview.hide(current, 'pop-out');
                    })
                },
                showLogin: function() {
                    mui.plusReady(function() { // 关闭当前页面
                        var current = plus.webview.currentWebview();
                        var login = plus.webview.getWebviewById('login.html');
                        plus.webview.show(login, 'pop-in');
                    })
                }
            }

        })
    },
    dateFun: function() { // 日期/时间  例如: 星期五  2017/09/22
        Date.prototype.Format = function(fmt) { //author: meizz
            var o = {
                "M+": this.getMonth() + 1, //月份
                "d+": this.getDate(), //日
                "h+": this.getHours(), //小时
                "m+": this.getMinutes(), //分
                "s+": this.getSeconds(), //秒
                "q+": Math.floor((this.getMonth() + 3) / 3), //季度
                "S": this.getMilliseconds() //毫秒
            };
            if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return fmt;
        }

        var date = new Date(),
            dates = date.Format("yyyy/MM/dd"),
            day = date.getDay(),
            week = '';
        switch (day) {
            case 0:
                week = '星期日'
                break;
            case 1:
                week = '星期一'
                break;
            case 2:
                week = '星期二'
                break;
            case 3:
                week = '星期三'
                break;
            case 4:
                week = '星期四'
                break;
            case 5:
                week = '星期五'
                break;
            case 6:
                week = '星期六'
                break;
            default:
                break;
        }
    },
    webviewShow: function() { // 子webView 显示方法
        mui.plusReady(function() {
            var currentView = plus.webview.currentWebview(); // 获取 当前webview
            currentView.show('slide-in-right', 300); // 显示当前webview (方式,时间)
            plus.nativeUI.closeWaiting(); // 关闭系统 loading 等待框
        })
    }
}